package com.fdb.basic.framework.core.util;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * TODO 十六进制处理工具类
 * @author Mr.Fang
 * @email luck_2088@163.com
 * @date 2019年1月20日 下午8:38:08
 *
 */
public class HexadecimalUtil {


	private static final Logger logger = LoggerFactory.getLogger(HexadecimalUtil.class);
	/**
	 * 
	 * TODO 处理十六进制的分隔符，0x开头的字符串为16进制标识符
	 * 
	 * @param hexa 字符串
	 * @return 返回字符串
	 * @author Mr.Fang
	 * @email luck_2088@163.com
	 * @date 2019年1月20日 下午7:15:43
	 */
	public static String dealHexadecimal(String hexa) {
		if (StringUtils.isNotEmpty(hexa) && hexa.contains("0x")) {
			return hexStringToString(hexa.substring(2));
		}
		return hexa;
	}
	/**
	 * 
	 * TODO 十六进制转字符串
	 * @param s
	 * @return 十六进对应的字符
	 * @author Mr.Fang
	 * @email luck_2088@163.com
	 * @date 2019年1月20日 下午8:28:49
	 */
	public static String hexStringToString(String s) {
		if (s == null || s.equals("")) {
			return null;
		}
		s = s.replace(" ", "");
		byte[] baKeyword = new byte[s.length() / 2];
		for (int i = 0; i < baKeyword.length; i++) {
			try {
				baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
			} catch (Exception e) {
				logger.error("hexStringToString方法执行出错", e);
			}
		}
		try {
			s = new String(baKeyword, "UTF-8");
			new String();
		} catch (Exception e1) {
			logger.error("hexStringToString方法执行出错", e1);
		}
		return s;
	}
}
